// app.js
App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)


    wx.cloud.init({
      env: "yourID",
      traceUser: true
    })


  },

  /**
   * 统一的登录提示方法（供其他页面调用）
   */
  showUnifiedLoginPrompt() {
    wx.showModal({
      title: '需要登录',
      content: '需要登录后才可以使用功能，还可以存储您的创作作品，方便后续查看和管理。是否现在登录？',
      confirmText: '立即登录',
      cancelText: '稍后再说',
      success: async (res) => {
        if (res.confirm) {
          await this.autoLogin();
        }
      }
    });
  },

  /**
   * 自动登录
   */
  async autoLogin() {
    try {
      wx.showLoading({
        title: '登录中...',
        mask: true
      });

      const result = await wx.cloud.callFunction({
        name: 'login'
      });

      wx.hideLoading();

      if (result.result && result.result.OPENID) {
        const loginData = result.result;

        // 生成唯一标识
        const timestamp = Date.now();
        const randomNum = Math.floor(Math.random() * 10000);
        const uniqueId = `${loginData.OPENID}_${timestamp}_${randomNum}`;

        // 获取本地存储的登录次数
        const existingLoginInfo = wx.getStorageSync('loginInfo');
        const loginCount = existingLoginInfo ? (existingLoginInfo.loginCount || 0) + 1 : 1;

        // 保存登录信息到本地存储
        const loginInfo = {
          uniqueId: uniqueId,
          openid: loginData.OPENID,
          appid: loginData.APPID,
          unionid: loginData.UNIONID,
          loginCount: loginCount,
          lastLoginTime: new Date().toISOString()
        };

        wx.setStorageSync('loginInfo', loginInfo);

        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 1500
        });

        // 更新全局登录状态
        this.globalData.isLoggedIn = true;
        this.globalData.userUniqueId = uniqueId;

        // 通知页面登录状态已更新
        this.notifyLoginStatusChanged();
      } else {
        console.error('自动登录失败:', result);
        wx.showToast({
          title: '登录失败',
          icon: 'error',
          duration: 2000
        });
      }
    } catch (error) {
      wx.hideLoading();
      console.error('自动登录异常:', error);
      wx.showToast({
        title: '登录异常',
        icon: 'error',
        duration: 2000
      });
    }
  },

  /**
   * 检查是否已登录
   */
  isLoggedIn() {
    const loginInfo = wx.getStorageSync('loginInfo');
    return !!(loginInfo && loginInfo.uniqueId);
  },

  /**
   * 获取用户openId
   */
  getUserOpenId() {
    const loginInfo = wx.getStorageSync('loginInfo');
    return loginInfo ? loginInfo.openid : null;
  },

  /**
   * 更新页面登录状态
   */
  updatePageLoginStatus() {
    const loginInfo = wx.getStorageSync('loginInfo');
    if (loginInfo && loginInfo.uniqueId) {
      this.globalData.isLoggedIn = true;
      this.globalData.userUniqueId = loginInfo.uniqueId;
    } else {
      this.globalData.isLoggedIn = false;
      this.globalData.userUniqueId = '';
    }
  },

  /**
   * 通知页面登录状态已更新
   */
  notifyLoginStatusChanged() {
    // 获取所有页面实例
    const pages = getCurrentPages();

    // 通知所有页面登录状态已更新
    pages.forEach(page => {
      if (page && page.onLoginStatusChanged) {
        page.onLoginStatusChanged();
      }
    });
  },

  globalData: {
    userInfo: null,
    isLoggedIn: false,
    userUniqueId: '',
    isGlobalProcessing: false // 全局处理状态
  },

  /**
   * 显示全局加载遮罩层
   */
  showGlobalLoading() {
    this.globalData.isGlobalProcessing = true;
    wx.hideTabBar({ animation: false }); // 隐藏tabBar
    this.notifyGlobalLoadingChanged();
  },

  /**
   * 隐藏全局加载遮罩层
   */
  hideGlobalLoading() {
    this.globalData.isGlobalProcessing = false;
    wx.showTabBar({ animation: false }); // 显示tabBar
    this.notifyGlobalLoadingChanged();
  },

  /**
   * 通知页面全局加载状态已更新
   */
  notifyGlobalLoadingChanged() {
    // 获取所有页面实例
    const pages = getCurrentPages();

    // 通知所有页面全局加载状态已更新
    pages.forEach(page => {
      if (page && page.onGlobalLoadingChanged) {
        page.onGlobalLoadingChanged();
      }
    });
  }
})
